package org.gvp.manager.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;

import org.gvp.manager.dto.MenuTreeData;
import org.gvp.manager.dto.NavigateMenuData;
import org.gvp.manager.pojo.SecurityUserMenu;
import org.gvp.manager.to.MapperUpdate;

import java.util.List;

/**
* 用户菜单关系表 mp映射接口
*/
@Mapper
public interface SecurityUserMenuMapper extends BaseMapper<SecurityUserMenu> {
    /**
     * 根据用户编号获取用户权限菜单树渲染时默认选中的菜单节点key列表
     * @param userId 用户编号
     */
    List<String> selectUserMenuKeys(Integer userId);
    /**
     * [用户菜单权限树] 根据菜单的父菜单ID查找菜单树数据列表
     * <li> 查找菜单的子菜单集合 </li>
     * @param parentId 菜单的父菜单ID
     */
    List<MenuTreeData> selectMenuTreeByParentId(Integer parentId);

    /**
     * [用户导航菜单] 根据导航菜单ID查找导航菜单信息
     * @param menuId 菜单ID
     */
    NavigateMenuData selectNavigateMenuById(Integer menuId);

    /**
     * 查找全部可用菜单信息,将菜单信息装载为用户菜单树类型
     */
    List<MenuTreeData> selectMenuTreeData();

    /**
     * 根据用户编号查找用户分配的菜单信息,反回格式为导航菜单数据类型
     * @param userId 用户编号
     */
    List<NavigateMenuData> selectNavigateMenuByUserId(Integer userId);


    /**
     * 根据用户的ID和用户菜单的KYE集合删除删除用户和菜单关系
     */
    int logicallyDelete(MapperUpdate update);

    /**
     * 根据菜单key集合查找菜单id集合
     * @param keys
     * @return
     */
    List<Integer> selectMenuIds(List<String> keys);

    SecurityUserMenu selectByUserIdAndMenuId(Integer userId, Integer menuId);

    /**
     * 根据用户菜单关系表数据ID恢复删除的用户菜单关系
     */
    int logicalRecovery(Integer id);
}
